#ifndef HANDRECOGNITION_H
#define HANDRECOGNITION_H

#include <QDebug>
#include "handbiometricdata.h"



/**
 * @file handrecognition.h
 * @author  Paweł Hanejko <phanejko@gmail.com>
 * @version 1.0
 *
 * @section LICENSE
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License as
 * published by the Free Software Foundation; either version 2 of
 * the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * General Public License for more details at
 * http://www.gnu.org/copyleft/gpl.html
 *
 * @section DESCRIPTION
 *
 * Plik nagłównkowy zawiera definicję klasy HandRecognition,
 * która zawiera metodę do porównywania danych biometrycznych.
 */


class HandRecognition
{

public:
    ///< Próg akceptacji podobieństwa równy 98,5%
    static const double ACCEPTANCE_THRESHOLD;
    /**
      * Porównuje parę danych biometrycznych
      * @return zwraca true jeśli porównywane dane mieszczą się w granicy akceptowalności
      **/
    static bool compare(HandBiometricData&,HandBiometricData&);


};

const double HandRecognition::ACCEPTANCE_THRESHOLD=0.06;

bool HandRecognition::compare(HandBiometricData& h1, HandBiometricData & h2)
{

    if(fabs(h1.ring_len/h2.ring_len -1)>ACCEPTANCE_THRESHOLD)return false;
    if(fabs(h1.middle_len/h2.middle_len -1)>ACCEPTANCE_THRESHOLD)return false;
    if(fabs(h1.index_len/h2.index_len -1)>ACCEPTANCE_THRESHOLD)return false;
    if(fabs(h1.thumb_len/h2.thumb_len -1)>ACCEPTANCE_THRESHOLD)return false;
    return true;
}


#endif // HANDRECOGNITION_H
